This invention relates, in general, to facilitating processing within a computing environment, and in particular, to managing task execution on accelerators of the computing environment.
Accelerators are used today to increase the processing capabilities of a server. In particular, accelerators coupled to the server are optimized to perform certain functions, enabling those functions to be performed at higher speeds than if those functions were performed by the server. When a function is reached in a program executed by the server, the server sends a request to an accelerator to perform the function. The accelerator performs the function and forwards the result back to the server. The server either performs further processing on the returned result or simply forwards the result to another accelerator, which then performs processing on the result and sends the result back to the server, again.
In production systems, typically all accelerators in a cluster of accelerators are powered up at the same time, even those accelerators that are not currently needed. Further, tasks are typically assigned to accelerators based on a round-robin approach.